Partial display updates in a windowing system using a programmable graphics processing unit

ABSTRACT

Techniques to generate partial display updates in a buffered window system in which arbitrary visual effects are permitted to any one or more windows (e.g., application-specific window buffers) are described. Once a display output region is identified for updating, the buffered window system is interrogated to determine which regions within each window, if any, may effect the identified output region. Such determination considers the consequences any filters associated with a window impose on the region needed to make the output update.

This is a continuation application which claims priority to U.S. patentapplication Ser. No. 11/696,588 entitled “Partial Display Updates in aWindowing System Using a Programmable Graphics Processing Unit,” filedApr. 4, 2007, which claims priority to U.S. patent application Ser. No.10/957,557 filed Oct. 1, 2004 (bearing the same title), which claimspriority to U.S. patent application Ser. No. 10/877,358, entitled“Display-Wide Visual Effects for a Windowing System using a ProgrammableGraphics Processing Unit,” filed 25 Jun. 2004, each of which is herebyincorporated by reference in their entirety.

BACKGROUND

The invention relates generally to computer display technology and, moreparticularly, to the application of visual effects using a programmablegraphics processing unit. The subject matter of the invention isgenerally related to the following jointly owned and co-pending patentapplications: “System for Reducing the Number of Programs Necessary toRender an Image,” by John Harper, Ser. No. 10/826,773; “System forOptimizing Graphics Operations” by John Harper, Ralph Brunner, PeterGraffagnino, and Mark Zimmer, Ser. No. 10/825,694; “System for EmulatingGraphics Operations,” by John Harper, Ser. No. 10/826,744; and“High-Level Program Interface for Graphics Operations,” by John Harper,Ralph Brunner, Peter Graffagnino, and Mark Zimmer, Ser. No. 10/826,762,each incorporated herein by reference in its entirety.

Referring to FIG. 1, in prior art buffered window computer system 100,each application (e.g., applications 105 and 110) has associated with itone or more window buffers or backing stores (e.g., buffers 115 and120—only one for each application is shown for convenience). Backingstore's represent each application's visual display. Applicationsproduce a visual effect (e.g., blurring or distortion) throughmanipulation of their associated backing store. At the operating system(“OS”) level, compositor 125 combines each application's backing store(in a manner that maintains their visual order) into a single “image”stored in assembly buffer 130. Data stored in assembly buffer 130 istransferred to frame buffer 135 which is then used to drive display unit140. As indicated in FIG. 1, compositor 125 (an OS-level application) isimplemented via instructions executed by computer system centralprocessing unit (“CPU”) 145.

Because of the limited power of CPU 145, it has not been possible toprovide more than rudimentary visual effects (e.g., translucency) at thesystem or display level. That is, while each application may effectsubstantially any desired visual effect or filter to their individualwindow buffer or backing store, it has not been possible to provide OSdesigners the ability to generate arbitrary visual effects at the screenor display level (e.g., by manipulation of assembly buffer 130 and/orframe buffer 135) without consuming virtually all of the system CPU'scapability—which can lead to other problems such as poor user responseand the like.

Thus, it would be beneficial to provide a mechanism by which a user(typically an OS-level programmer or designer) can systematicallyintroduce arbitrary visual effects to windows as they are composited orto the final composited image prior to its display.

SUMMARY

Methods, devices and systems in accordance with the invention provide ameans for performing partial display updates in a windowing system thatpermits layer-specific filtering. One method in accordance with theinvention includes: identifying an output region associated with atop-most display layer (e.g., an application-specific window buffer),wherein the output region has an associated output size and location;determining an input region for each of one or more filters, whereineach of the one or more filters is associated with a display layer andhas an associated input size and location (substantially any knownvisual effect filter may be accommodated); establishing a buffer (e.g.,an assembly buffer) having a size and location that corresponds to theunion of the output region's location and each of the one or more inputregions' locations; and compositing that portion of each display layerthat overlaps the buffer's location into the established buffer. In oneembodiment, that portion of the buffer corresponding to the identifiedoutput region is transferred to a frame buffer where it is used toupdate a user's display device. In another embodiment, the acts ofidentifying, determining and establishing are performed by one or moregeneral purpose central processing units while the act of compositing isperformed by one or more special purpose graphical processing units in alinear fashion (beginning with the bottom-most display layer andproceeding to the top-most display layer).

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows a prior art buffered window computer system.

FIG. 2 shows a buffered window computer system in accordance with oneembodiment of the invention.

FIGS. 3A and 3B show a below-effect in accordance with one embodiment ofthe invention.

FIGS. 4A and 4B show an on-effect in accordance with one embodiment ofthe invention.

FIGS. 5A and 5B show an on-effect in accordance with another embodimentof the invention.

FIGS. 6A and 6B show an above-effect in accordance with one embodimentof the invention.

FIGS. 7A and 7B show a full-screen effect in accordance with oneembodiment of the invention.

FIG. 8 shows, in block diagram form, a display whose visual presentationhas been modified in accordance with the invention.

FIG. 9 shows, in flowchart form, an event processing technique inaccordance with one embodiment of the invention.

FIG. 10 shows a system in which a partial display update in accordancewith the prior art is performed.

FIG. 11 shows, in flowchart format, a partial display update techniquein accordance with one embodiment of the invention.

FIG. 12 shows an illustrative system in accordance with the invention inwhich a partial display update is performed.

DETAILED DESCRIPTION

Methods and devices to generate partial display updates in a bufferedwindow system in which arbitrary visual effects are permitted to any oneor more windows are described. Once a display output region isidentified for updating, the buffered window system is interrogated todetermine which regions within each window, if any, may effect theidentified output region. Such determination considers the consequencesany filters associated with a window impose on the region needed to makethe output update. The following embodiments of the invention, describedin terms of the Mac OS X window server and compositing application, areillustrative only and are not to be considered limiting in any respect.(The Mac OS X operating system is developed, distributed and supportedby Apple Computer, Inc. of Cupertino, Calif.)

Referring to FIG. 2, buffered window computer system 200 in accordancewith one embodiment of the invention includes a plurality ofapplications (e.g., applications 205 and 210), each of which isassociated with one or more backing stores, only one of which is shownfor clarity and convenience (e.g., buffers 215 and 220). Compositor 225(one component in an OS-level “window server” application) uses fragmentprograms executing on programmable graphics processing unit (“GPU”) 230to combine, or composite, each application's backing store into a single“image” stored in assembly buffer 235 in conjunction with, possibly,temporary buffer 240. Data stored in assembly buffer 235 is transferredto frame buffer 245 which is then used to drive display unit 250. Inaccordance with one embodiment, compositer 225/GPU 230 may alsomanipulate a data stream as it is transferred into frame buffer 245 toproduce a desired visual effect on display 250.

As used herein, a “fragment program” is a collection of programstatements designed to execute on a programmable GPU. Typically,fragment programs specify how to compute a single output pixel—many suchfragments being run in parallel on the GPU to generate the final outputimage. Because many pixels are processed in parallel, GPUs can providedramatically improved image processing capability (e.g., speed) overmethods that rely only on a computer system's CPU (which is alsoresponsible for performing other system and application duties).

Techniques in accordance with the invention provide four (4) types ofvisual effects at the system or display level. In the first, hereinafterreferred to as “before-effects,” visual effects are applied to abuffered window system's assembly buffer prior to compositing a targetwindow. In the second, hereinafter referred to as “on-effects,” visualeffects are applied to a target window as it is being composited intothe system's assembly buffer or a filter is used that operates on twoinputs at once to generate a final image—one input being the targetwindow, the other being the contents of the assembly buffer. In thethird, hereinafter referred to as “above-effects,” visual effects areapplied to a system's assembly buffer after compositing a target window.And in the fourth, hereinafter referred to as “full-screen effects,”visual effects are applied to the system's assembly buffer as it istransmitted to the system's frame-buffer for display.

Referring to FIGS. 3A and 3B, below-effect 300 in accordance with oneembodiment of the invention is illustrated. In below-effect 300, thewindows beneath (i.e., windows already composited and stored in assemblybuffer 235) a target window (e.g., contained in backing store 220) arefiltered before the target window (e.g., contained in backing store 220)is composited. As shown, the contents of assembly buffer 235 are firsttransferred to temporary buffer 240 by GPU 230 (block 305 in FIG. 3A and← in FIG. 3B). GPU 230 then filters the contents of temporary buffer 240into assembly buffer 235 to apply the desired visual effect (block 310in FIG. 3A and ↑ in FIG. 3B). Finally, the target window is compositedinto (i.e., on top of the contents of) assembly buffer 235 by GPU 230(block 315 and → in FIG. 3B). It will be noted that because the targetwindow is composited after the visual effect is applied, below-effect300 does not alter or impact the target window. Visual effectsappropriate for a below-effect in accordance with the invention include,but are not limited to, drop shadow, blur and glass distortion effects.It will be known by those of ordinary skill that a filter need not beapplied to the entire contents of the assembly buffer or target window.That is, only a portion of the assembly buffer and/or target window needbe filtered. In such cases, it is known to use the bounding rectangle orthe alpha channel of the target window to determine the region that isto be filtered.

Referring to FIGS. 4A and 4B, on-effect 400 in accordance with oneembodiment of the invention is illustrated. In on-effect 400, a targetwindow (e.g., contained in backing store 220) is filtered as it is beingcomposited into a system's assembly buffer. As shown, the contents ofwindow buffer 220 are filtered by GPU 230 (block 405 in FIG. 4A and ← inFIG. 4B) and then composited into assembly buffer 235 by GPU 230 (block410 in FIG. 4A and ↑ in FIG. 4B). Referring to FIGS. 5A and 5B,on-effect 500 in accordance with another embodiment of the invention isillustrated. In on-effect 500, a target window (e.g., contained inbacking store 220) and assembly buffer 235 (block 505 in FIG. 5A and ←in FIG. 5B) are filtered into temporary buffer 240 (block 510 in FIG. 5Aand ↑ in FIG. 5B). The resulting image is transferred back into assemblybuffer 235 (block 515 in FIG. 5A and → in FIG. 5B). Visual effectsappropriate for an on-effect in accordance with the invention include,but are not limited to, window distortions and color correction effectssuch as grey-scale and sepia tone effects.

Referring to FIGS. 6A and 6B, above-effect 600 in accordance with oneembodiment of the invention is illustrated. In above-effect 600, thetarget window (e.g., contained in backing store 220) is composited intothe system's assembly buffer prior to the visual effect being applied.Accordingly, unlike below-effect 300, the target window may be affectedby the visual effect. As shown, the target window is first compositedinto assembly buffer 235 by GPU 230 (block 605 in FIG. 6A and ← in FIG.6B), after which the result is transferred to temporary buffer 240 byGPU 230 (block 610 in FIG. 6A and ↑ in FIG. 6B). Finally, GPU 230filters the contents of temporary buffer 240 into assembly buffer 235 toapply the desired visual effect (block 615 in FIG. 6A and → in FIG. 6B).Visual effects appropriate for an on-effect in accordance with theinvention include, but are not limited to, glow effects.

Referring to FIGS. 7A and 7B, full-screen effect 700 in accordance withone embodiment of the invention is illustrated. In full-screen effect700, the assembly buffer is filtered as it is transferred to thesystem's frame buffer. As shown, the contents of assembly buffer 235 arefiltered by GPU 230 (block 705 in FIG. 7A and ← in FIG. 7B) as thecontents of assembly buffer 235 are transferred to frame buffer 245(block 710 in FIG. 7A and ↑ in FIG. 7B). Because, in accordance with theinvention, programmable GPU 230 is used to apply the visual effect,virtually any visual effect may be used. Thus, while prior art systemsare incapable of implementing sophisticated effects such as distortion,tile, gradient and blur effects, these are possible using the inventivetechnique. In particular, high-benefit visual effects for a full-screeneffect in accordance with the invention include, but are not limited to,color correction and brightness effects. For example, it is known thatliquid crystal displays (“LCDs”) have a non-uniform brightnesscharacteristic across their surface. A full-screen effect in accordancewith the invention could be used to remove this visual defect to providea uniform brightness across the display's entire surface.

It will be recognized that, as a practical matter, full-screen visualeffects must conform to the system's frame buffer scan rate. That is,suitable visual effects in accordance with 700 include those effects inwhich GPU 230 generates filter output at a rate faster than (or at leastas fast as) data is removed from frame buffer 245. If GPU output isgenerated slower than data is withdrawn from frame buffer 245, potentialdisplay problems can arise. Accordingly, full-screen effects aregenerally limited to those effects that can be applied at a rate fasterthan the frame buffer's output scan rate.

Event routing in a system employing visual effects in accordance withthe invention must be modified to account for post-application effects.Referring to FIG. 8, for example, application 210 may write into windowbuffer 220 such that window 800 includes button 805 at a particularlocation. After being modified in accordance with one or more of effects300, 400, 600 and 700, display 250 may appear with button 805 modifiedto display as 810. Accordingly, if a user (the person viewing display250) clicks on button 810, the system (i.e., the operating system) mustbe able to map the location of the mouse click into a location known byapplication 210 as corresponding to button 805 so that the applicationknows what action to take.

It will be recognized by those of ordinary skill in the art that filters(i.e., fragment programs implementing a desired visual effect) operateby calculating a destination pixel location (i.e., x_(d), y_(d)) basedon one or more source pixels. Accordingly, the filters used to generatethe effects may also be used to determine the source location(coordinates). Referring to FIG. 9, event routing 900 in accordance withone embodiment of the invention begins when an event is detected (block905). As used herein, an event may be described in terms of a “click”coordinate, e.g., (x_(click), y_(click)). Initially, a check is made todetermine if the clicked location comports with a filtered region of thedisplay. If the clicked location (x_(click), y_(click)) has not beensubject to an effect (the “No” prong of block 910), the coordinate issimply passed to the appropriate application (block 925). If the clickedlocation (x_(click), y_(click)) has been altered in accordance with theinvention (the “Yes” prong of block 910), the last applied filter isused to determine a first tentative source coordinate (block 915). Ifthe clicked location has not been subject to additional effects inaccordance with the invention (the “Yes” prong of block 920), the firsttentative calculated source coordinate is passed to the appropriateapplication (block 925). If the clicked location has been subject toadditional effects in accordance with the invention (the “No” prong ofblock 920), the next most recently applied filter is used to calculate asecond tentative source coordinate. Processing loop 915-920 is repeatedfor each filter applied to clicked location (x_(click), y_(click)).

In addition to generating full-screen displays utilizing below, on andabove filtering techniques as described herein, it is possible togenerate partial screen updates. For example, if only a portion of adisplay has changed only that portion need be reconstituted in thedisplay's frame buffer.

Referring to FIG. 10, consider the case where user's view 1000 is theresult of five (5) layers: background layer L0 1005, layer L1 1010,layer L2 1015, layer L3 1020 and top-most layer L4 1025. In the priorart, when region 1030 was identified by the windowing subsystem asneeded to be updated (e.g., because a new character or small graphic isto be shown to the user), an assembly buffer was created having a sizelarge enough to hold the data associated with region 1030. Once created,each layer overlapping region 1030 (e.g., regions 1035, 1040 and 1045)was composited into the assembly buffer—beginning at background layer L01005 (region 1045) up to top-most layer L4 1025 (region 1030). Theresulting assembly buffer's contents were then transferred into thedisplay's frame buffer at a location corresponding to region 1030.

When layer-specific filters are used in accordance with the invention,the prior art approach of FIG. 10 does not work. For example, aspecified top-layer region comprising (a×b) pixels may, because of thatlayer's associated filter, require more (e.g., due to a blurring typefilter) or fewer (e.g., due to a magnification type filter) pixels fromthe layer below it. Thus, the region identified in the top-most layer bythe windowing subsystem as needing to be updated may not correspond tothe required assembly buffer size. Accordingly, the effect each layer'sfilter has on the ability to compute the ultimate output region must beconsidered to determine what size of assembly buffer to create. Oncecreated, each layer overlapping the identified assembly buffer's extent(size and location) may be composited into the assembly buffer asdescribed above with respect to FIG. 10 with the addition of applyingthat layer's filter—e.g., a below, on or above filter as previouslydescribed.

Referring to FIG. 11, assembly buffer extent (size and location)determination technique 1100 in accordance with one embodiment of theinvention includes receiving identification of a region in the user'sdisplay that needs to be updated (block 1105). One of ordinary skill inthe art will recognize that this information may be provided byconventional windowing subsystems. The identified region establishes theinitial assembly buffer's (“AB”) extent (block 1110). Starting at thetop-most layer (that is, the windowing layer closest to the viewer,block 1115) a check is made to determine if the layer has an associatedfilter (block 1120). Illustrative output display filters include below,on and above filters as described herein. If the layer has an associatedfilter (the “Yes” prong of block 1120), the filter's region of interest(“ROI”) is used to determine the size of the filter's input regionrequired to generate a specified output region (block 1125). Asdescribed in the filters identified above, a filter's ROI is the inputregion needed to generate a specified output region. For example, if theoutput region identified in accordance with block 1110 comprises aregion (a×b) pixels, and the filter's ROI identifies a region (x×y)pixels, then the identified (x×y) pixel region is required at thefilter's input to generate the (x×y) pixel output region. The extent ofthe AB is then updated to be equal to the combination (via the set unionoperation) of the current AB extent and that of the region identified inaccordance with block 1125 (block 1130). If there are additional layersto interrogate (the “Yes” prong of block 1135), the next layer isidentified (block 1140) and processing continues at block 1120. If noadditional layers remain to be interrogated (the “No” prong of block1135), the size of AB needed to generate the output region identified inblock 1105 is known (block 1145). With this information, an AB of theappropriate size may be instantiated and each layer overlapping theidentified AB region composited into it in a linear fashion—beginning atthe bottom-most or background layer and moving upward toward thetop-most layer (block 1150). Once compositing is complete, that portionof the AB's contents corresponding to the originally identified outputregion (in accordance with the acts of block 1105) may be transferred tothe appropriate location within the display's frame buffer (“FB”) (block1155). For completeness, it should be noted that if an identified layerdoes not have an associated filter (the “No” prong of block 1120)processing continues at block 1135. In one embodiment, acts inaccordance with blocks 1110-1145 may be performed by one or morecooperatively coupled general purpose CPUs, while acts in accordancewith blocks 1150 and 1155 may be performed by one or more cooperativelycoupled GPUs.

To illustrate how process 1100 may be applied, consider FIG. 12 in whichuser's view 1200 is the result of compositing five (5) display layers:background layer L0 1205, layer L1 1210, layer L2 1215, layer L3 1220and top-most layer L4 1225. In this example, assume region 1230 has beenidentified as needing to be update on display 1200 and that (i) layer L41225 has a filter whose ROI extent is shown as 1235, (ii) layer L3 1220has a filter whose ROI extent is shown as 1245, (iii) layer L2 1225 hasa filter whose ROI extent is shown as 1255, and (iv) layer L1 1210 has afilter whose ROI extent is shown as 1265.

In accordance with process 1100, region 1230 is used to establish aninitial AB size. (As would be known to those of ordinary skill in theart, the initial location of region 1230 is also recorded.) Next, region1240 in layer L3 1220 needed by layer L4 1225's filter is determined. Asshown, the filter associated with layer L4 1225 uses region 1240 fromlayer L3 1220 to compute or calculate its display (L4 Filter ROI 1235).It will be recognized that only that portion of layer L3 1220 thatactually exists within region 1240 is used by layer L4 1225's filter.Because the extent of region 1240 is greater than that of initial region1230, the AB extent is adjusted to include region 1240. A similarprocess is used to identify region 1250 in layer L2 1215. As shown inFIG. 12, the filter associated with layer L3 1220 does not perturb theextent/size of the needed assembly buffer. This may be because thefilter is the NULL filter (i.e., no applied filter) or because thefilter does not require more, or fewer, pixels from layer L2 1215 (e.g.,a color correction filter).

The process described above, and outlined in blocks 1120-1130, isrepeated again for layer L2 1215 to identify region 1260 in layer L11210. Note that region 1260 is smaller than region 1250 and so the size(extent) of the AB is not modified. Finally, region 1270 is determinedbased on layer L1's filter ROI 1265. If region 1270 covers some portionof background layer L0 1205 not yet “within” the determined AB, theextent of the AB is adjusted to do so. Thus, final AB size and location(extent) 1275 represents the union of the regions identified for eachlayer L0 1205 through L4 1225. With region 1275 known, an AB of theappropriate size may be instantiated and each layer that overlaps region1275 is composited into it—starting at background layer L0 1205 andfinishing with top-most layer L4 1225 (i.e., in a linear fashion). Thatportion of the AB corresponding to region 1230 may then be transferredinto display 1200's frame buffer (at a location corresponding to region1230) for display.

As noted above, visual effects and display updates in accordance withthe invention may incorporate substantially any known visual effects.These include color effects, distortion effects, stylized effects,composition effects, half-tone effects, transition effects, tileeffects, gradient effects, sharpen effects and blur effects.

Various changes in the components as well as in the details of theillustrated operational methods are possible without departing from thescope of the following claims. For instance, in the illustrative systemof FIG. 2 there may be additional assembly buffers, temporary buffers,frame buffers and/or GPUs. Similarly, in the illustrative system of FIG.12, there may be more or fewer display layers (windows). Further, notall layers need have an associated filter. Further, regions identifiedin accordance with block 1125 need not overlap. That is, regionsidentified in accordance with the process of FIG. 11 may be disjoint ordiscontinuous. In such a case, the union of disjoint regions is simplythe individual regions. One of ordinary skill in the art will furtherrecognize that recordation of regions may be done in any suitablemanner. For example, regions may be recorded as a list of rectangles ora list of (closed) paths. In addition, acts in accordance with FIGS. 3A,4A, 6A, 7A and 9 may be performed by two or more cooperatively coupledGPUs and may, further, receive input from one or more system processingunits (e.g., CPUs). It will further be understood that fragment programsmay be organized into one or more modules and, as such, may be tangiblyembodied as program code stored in any suitable storage device. Storagedevices suitable for use in this manner include, but are not limited to:magnetic disks (fixed, floppy, and removable) and tape; optical mediasuch as CD-ROMs and digital video disks (“DVDs”); and semiconductormemory devices such as Electrically Programmable Read-Only Memory(“EPROM”), Electrically Erasable Programmable Read-Only Memory(“EEPROM”), Programmable Gate Arrays and flash devices.

The preceding description was presented to enable any person skilled inthe art to make and use the invention as claimed and is provided in thecontext of the particular examples discussed above, variations of whichwill be readily apparent to those skilled in the art. Accordingly, theclaims appended hereto are not intended to be limited by the disclosedembodiments, but are to be accorded their widest scope consistent withthe principles and features disclosed herein.

1. A method to generate a display-wide visual effect using one or moreprocessing units, comprising: copying content from an image buffer intoa second buffer; filtering by executing one or more fragment programs ona graphics processing unit capable of executing a plurality of fragmentprograms in parallel, the second buffer's contents back into the imagebuffer to generate a specified visual effect, wherein the image bufferis associated with a system frame buffer; and compositing by executingone or more fragment programs on the graphics processing unit, anapplication-specific window buffer into the image buffer, wherein theact of compositing is performed by the graphics processing unit afterthe act of filtering and wherein the application-specific window buffercomprises a backing store associated with a computer applicationexecuting in a computer's buffered window system.
 2. The method of claim1, wherein the act of filtering comprises filtering less than all of thesecond buffer's contents.
 3. The method of claim 1, wherein thespecified visual effect comprises one or more of the following visualeffects: color effects, distortion effects, stylized effects,composition effects, half-tone effects, transition effects, tileeffects, gradient effects, sharpen effects and blur effects.
 4. Themethod of claim 1, further comprising transferring contents of the imagebuffer to the system frame buffer after the act of compositing.
 5. Amethod to generate a display-wide visual effect, comprising: filtering,by executing one or more fragment programs on a graphics processingunit, first content from an application-specific window buffer andsecond content from an image buffer into a second buffer to create thirdcontent using the graphics processing unit to generate a specifiedvisual effect wherein the graphics processing unit is capable ofexecuting a plurality of fragment programs in parallel and wherein theapplication-specific window buffer comprises a backing store associatedwith a computer application executing in a computer's buffered windowsystem; and transferring, using the graphics processing unit, the thirdcontent of the second buffer into the image buffer, said image bufferassociated with a system frame buffer.
 6. The method of claim 5, whereinthe act of filtering comprises filtering less than all of the firstcontent from the application-specific window buffer.
 7. The method ofclaim 5, wherein the specified visual effect comprises one or more ofthe following visual effects: color effects, distortion effects,stylized effects, composition effects, half-tone effects, transitioneffects, tile effects, gradient effects, sharpen effects and blureffects.
 8. A method to generate a display-wide visual effect,comprising: compositing, by executing one or more fragment programs on agraphics processing unit, first content from an application-specificwindow buffer into an image buffer to create second content, said imagebuffer associated with a system frame buffer wherein theapplication-specific window buffer comprises a backing store associatedwith a computer application executing in a computer's buffered windowsystem; copying the second content from the image buffer into a secondbuffer to create third content; and filtering, by executing one or morefragment programs on the graphics processing unit, the third content inthe second buffer into the image buffer using the graphics processingunit to generate a specified visual effect wherein the graphicsprocessing unit is capable of executing a plurality of fragment programsin parallel.
 9. The method of claim 8, wherein the act of filteringfirst content comprises filtering less than all content in theapplication-specific window buffer.
 10. The method of claim 8, whereinthe specified visual effect comprises one or more of the followingvisual effects: color effects, distortion effects, stylized effects,composition effects, half-tone effects, transition effects, tileeffects, gradient effects, sharpen effects and blur effects.
 11. Anon-transitory computer-readable medium having computer-executableinstructions stored therein for causing one or more programmableprocessing units to perform the method recited in claim
 1. 12. Anon-transitory computer-readable medium having computer-executableinstructions stored therein for causing one or more programmableprocessing units to perform the method recited in claim
 5. 13. Anon-transitory computer-readable medium having computer-executableinstructions stored therein for causing one or more programmableprocessing units to perform the method recited in claim
 8. 14. Acomputer system, comprising: a central processing unit; memory,operatively coupled to the central processing unit, said memory adaptedto provide a plurality of application-specific window buffers, at leastone assembly buffer, and at least one frame buffer; a display portoperatively coupled to the frame buffer and adapted to couple to adisplay device; a graphics processing unit operatively coupled to thememory and capable of executing a plurality of fragment programs inparallel; and one or more programs for causing the graphics processingunit to perform the method recited in claim
 1. 15. A computer system,comprising: a central processing unit; memory, operatively coupled tothe central processing unit, said memory adapted to provide a pluralityof application-specific window buffers, at least one assembly buffer,and at least one frame buffer; a display port operatively coupled to theframe buffer and adapted to couple to a display device; a graphicsprocessing unit operatively coupled to the memory and capable ofexecuting a plurality of fragment programs in parallel; and one or moreprograms for causing the graphics processing unit to perform the methodrecited in claim
 5. 16. A computer system, comprising: a centralprocessing unit; memory, operatively coupled to the central processingunit, said memory adapted to provide a plurality of application-specificwindow buffers, at least one assembly buffer, and at least one framebuffer; a display port operatively coupled to the frame buffer andadapted to couple to a display device; a graphics processing unitoperatively coupled to the memory and capable of executing a pluralityof fragment programs in parallel; and one or more programs for causingthe graphics processing unit to perform the method recited in claim 8.